home *** CD-ROM | disk | FTP | other *** search
- #define STS_OK 0
- #define STS_BAD_LEN -10
- #define STS_ERROR -1
-
- extern int
- truncate_file (char * path, long len)
- {
- int infile, tmp_file; /* input file */
- int ret = STS_OK;
- char tf_name [L_tmpnam];
-
- do {
- if (len < 0>
- {
- ret = STS_BAD_LENGTH;
- break;
- }
- if (len == 0)
- {
- ret = truncate_to_zero (path);
- break;
- }
- if ((infile = open (path, O_RDONLY, 0)) < 0)
- {
- ret = STS_ERROR;
- break;
- }
- if (file_len (infile) <= len)
- {
- close (infile);
- ret = STS_SMALL_FILE;
- break;
- }
-
- /* after all error conditions are checked, we finally do
- some real work here */
-
- tmpnam (tf_name);
- tmp_file = open (tf_name, O_RDWR | 0_CREAT, 0666);
- ret = copy_file (infile, tmp_file, path, len);
- unlink (tf_name);
-
- } while (FALSE);
- return (ret);
- }
-
-